var App = {
	createdata  : {
	    create  : function(to, id){ $(to).append("<div id='"+id+"'></div>"); },
	    message : function(to, classe, msg, response)
	    {
	    	$(to).append("<div class='"+classe+"' style='display:none;'>" +
		  			"<div>"+
		  			  "<div style='float:left'><h3>"+msg+"</h3></div>"+
		  			  "<div style='float:right; text-align: right;'>"+
		  			    "<div class='close'>"+
		  			      "<a href='javascript:void(0);' class='icoFechar' id='closeTopMessage'></a>"+
		  			    "</div>" +
		  			  "</div>" +
		  			"</div>"+
		  			"<div style='clear:both'>"+response+"</div>"+
	  		    "</div>");
	    }
	},
	messagedata : {
        clear: function ()
        {
        	$("div[class^='msg']").each(function(){ $(this).remove(); });
        },
        alert:  function(type, response, label)
        {
        	App.messagedata.clear();
        	App.createdata.message("#mensagens", type, label, response);
        	
        	$('div.' + type).show();
        	//$.scrollTo('body', 300); //Executa o scroll para a tela de mensagem
        }
    },
    bodydata : {
	    toTab: function(params)
	    {
	    	$('.tabs').tabs(params);
	    },
	    reloadTab: function(id)
        {
            var $tab    = $('.tabs');
            $tab.tabs('load', id);
        }
    },
	formatdata	: {
        even	:  function(seletor , cor){ $(seletor + ":even").css("background-color", cor); },
        calendar: function(params){ $('.datepicker').datepicker(params); }
	},
	formdata	: {
		save	: function (is_ajax, callback)
        {
            var validator = $("form[name^='form_']").each(function()
            {
                $(this).validate({
                    errorClass: 'mensagem_erro',
                    validClass: 'valid',
                    submitHandler: function(form)
                    {
                		var options = {
                            url: $(form).attr("action"),
                            type: 'post',
                            success: function(response)
                            {
                            	try
                                {
                            		if(callback)
                                	{
                            			if(response.error)
	                                  	{
                            				App.messagedata.alert('msgErro', response.error, 'Error');
	                                  		return;
	                                  	}
                                		  	
                                		eval(callback);
                                		App.messagedata.alert('msgSucesso', 'Dados salvos com sucesso.', 'Sucesso');
                                	}
                            		else
			                      	{
                            			if(response.error)
			                      		{
                            				App.messagedata.alert('msgErro', response.error, 'Error');
			                      			return;
			                      		}	
			                      		else
			                      		{
			                      			App.messagedata.alert('msgSucesso', 'Dados salvos com sucesso.', 'Sucesso');
			                      		}
			                      	}
                                }
                                catch(err)
                                {
                                	App.messagedata.alert('msgErro', 'Erro ao executar operação.', 'Erro');
                                }
                            }
                        };

                        if(is_ajax)
                        {
                        	$(form).ajaxSubmit(options);
                        	return false;
                        }
                        else
                        	$(form).submit();

                        return false;
                   }
                });
            });
        },
        remove: function(tab)
        {
            $("a[id=delete]").click(function()
            {
            	var url	= $(this).attr('href');
            	
            	$("#conteudo-ajax").html('<h3>Tem certeza que deseja remover este item?</h3>');
            	App.modaldata.openDialog('#conteudo-ajax', 
            	{
            		width: 400, 
        			modal:true, 
        			title: 'Remoção de dados',
        			resizable: false,
        			buttons: {
        				"Remover": function() {
		            		$.post(url, {
		                      }, function(response) 
			                      {
                                      App.bodydata.reloadTab(tab);
                                      App.messagedata.alert('Sucesso', 'Dados salvos com sucesso.', 'Sucesso');
                                	  App.modaldata.clearModal();
			                      }
		                      );
        				},
        				'Cancelar': function() {
        					$( this ).dialog( "close" );
        				}
    				}
    			});
        		return false;
            });
        }
	},
	modaldata 	: {
		onClick: function(id, type, params, static_content)
        {
    		var div_id	= "#conteudo-ajax";
                
	        $('#conteudo-ajax').dialog('destroy');
            $("a[id='"+id+"']").click(function()
            {
              if(!static_content){  $("#conteudo-ajax").load($(this).attr("href"));}
              else div_id	= static_content;
                
                if(type)
                {
                    if(type == "dialog")
                    {
                    	App.modaldata.openDialog(div_id, params);
                    	return false;
                    }
                    else if(type == "midiabox")
                    { 
                    	App.modaldata.openMidiaBox($(this));
                    	return false; 
                    }
                }
            });
        },
        openDialog: function(id, params)
        {
            if($(id).dialog( 'isOpen' ) == false)
                $(id).dialog('open');
            else 
            {
            	$("#dialog_site").dialog( "destroy" );
            	$(id).dialog(params);
            }
        },
        openMidiaBox: function(id, is_gallery)
        {
        	var atb	= 'rel';
        	
        	if(!is_gallery) atb = 'id';
        	
        	$("a["+atb+"='"+id+"']").colorbox(
			{
				onOpen:function(){  },
				onLoad:function(){ },
				onComplete:function(){  },
				onCleanup:function(){  },
				onClosed:function(){ }
			});
        	return false;
        }
    },
	ajaxdata	: {
        control :  function()
        {
    		$('body').append('<div id="loading">Carregando...</div>');
    		$('body').ajaxStart(function(){ $("#loading").show(); });
    		$('body').ajaxStop(function(){ $("#loading").hide(); });
        }
	}
};

/**
 * Inicialização dos componentes
 */
$(document).ready(function(){
	App.ajaxdata.control();
	App.formatdata.calendar();
	
	// fechar a janela de mensagem
	$('#closeTopMessage').click(function(){ $('#mensagens').hide(); });
});